#ifndef BUFFER_H  
#define BUFFER_H

#include <stdlib.h>
#include <string.h>
#include <stdbool.h>


#define BUFFER_INIT_CAP 1024 //缓冲区初始容量
#define BUFFER_MAX_CAP (1024 * 1024)  //支持的最大缓冲区大小(1MB)


typedef struct {
    char* data;        //数据存储指针
    size_t len;        //当前数据长度
    size_t cap;        //当前缓冲区容量
} Buffer;


void buffer_init(Buffer* buf); //初始化缓冲区
void buffer_free(Buffer* buf); //释放缓冲区资源
int buffer_grow(Buffer* buf, size_t need); //缓冲区扩容
int buffer_append(Buffer* buf,char* data, size_t len); //追加数据,适用一个数据的分块传输
void buffer_clear(Buffer* buf);//清空缓冲区,但保留占用内存,下一次HTTP连接复用,避免重复扩容,提高效率
//const char* buffer_data(const Buffer* buf); //获取当前数据指针
//size_t buffer_len(const Buffer* buf); //获取当前数据长度


#endif // BUFFER_H